DeepSpeed একটি শক্তিশালী লাইব্রেরি যা বড় মডেল এবং ডেটাসেটগুলোর প্রশিক্ষণে উন্নত দক্ষতা এবং গতি নিয়ে আসে। এটি বেশ কয়েকটি জনপ্রিয় ডীপ লার্নিং লাইব্রেরির সাথে ইন্টিগ্রেট করা যায়। এখানে আমরা PyTorch, Hugging Face Transformers, এবং TensorFlow এর মতো লাইব্রেরিগুলোর সাথে DeepSpeed এর ব্যবহার দেখাব।
১. DeepSpeed এর সাথে PyTorch
PyTorch এর সাথে DeepSpeed ব্যবহার করে একটি সিম্পল নিউরাল নেটওয়ার্ক প্রশিক্ষণের উদাহরণ।
উদাহরণ: PyTorch এর সাথে DeepSpeed
import torch
import torch.nn as nn
import torch.optim as optim
import deepspeed
# মডেল তৈরি
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(10, 64)
self.fc2 = nn.Linear(64, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
return self.fc2(x)
# DeepSpeed কনফিগারেশন
deepspeed_config = {
"train_batch_size": 32,
"fp16": {
"enabled": True # Mixed Precision Training
},
"zero_optimization": {
"stage": 2 # ZeRO Stage 2
},
"optimizer": {
"type": "AdamW",
"params": {
"lr": 0.001
}
}
}
# মডেল এবং ডেটাসেট প্রস্তুত
model = SimpleNN()
data = torch.randn(1000, 10)
labels = torch.randn(1000, 1)
# DeepSpeed ইনিশিয়ালাইজ করা
model_engine, optimizer, _, _ = deepspeed.initialize(
config=deepspeed_config,
model=model,
model_parameters=model.parameters()
)
# Training Loop
for epoch in range(5):
for i in range(len(data) // 32):
inputs = data[i*32:(i+1)*32]
target = labels[i*32:(i+1)*32]
inputs, target = inputs.to(model_engine.local_rank), target.to(model_engine.local_rank)
optimizer.zero_grad()
outputs = model_engine(inputs)
loss = nn.MSELoss()(outputs, target)
model_engine.backward(loss)
model_engine.step()
print(f'Epoch {epoch + 1} completed')
২. DeepSpeed এর সাথে Hugging Face Transformers
Hugging Face এর সাথে DeepSpeed ব্যবহারের মাধ্যমে একটি প্রাক-প্রশিক্ষিত ভাষা মডেল প্রশিক্ষণ করুন।
উদাহরণ: Hugging Face Transformers এর সাথে DeepSpeed
from transformers import BertForSequenceClassification, BertTokenizer, Trainer, TrainingArguments
import deepspeed
# BERT মডেল এবং টোকেনাইজার লোড
model_name = "bert-base-uncased"
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2)
tokenizer = BertTokenizer.from_pretrained(model_name)
# ডেটাসেট লোড করা (উদাহরণস্বরূপ)
from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
# টোকেনাইজেশন
def tokenize_function(examples):
return tokenizer(examples["sentence1"], examples["sentence2"], truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# Training arguments তৈরি করা
deepspeed_config = "deepspeed_config.json"
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
learning_rate=5e-5,
per_device_train_batch_size=32,
num_train_epochs=3,
deepspeed=deepspeed_config # DeepSpeed কনফিগারেশন যুক্ত করা
)
# Trainer তৈরি করা
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"]
)
# মডেল ট্রেনিং করা
trainer.train()
৩. DeepSpeed এর সাথে TensorFlow
TensorFlow এর সাথে DeepSpeed ব্যবহার করে প্রশিক্ষণের উদাহরণ।
উদাহরণ: TensorFlow এর সাথে DeepSpeed
import tensorflow as tf
from transformers import TFAutoModelForSequenceClassification, AutoTokenizer
# মডেল এবং টোকেনাইজার লোড করা
model_name = "distilbert-base-uncased"
model = TFAutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# ডেটাসেট লোড করা
from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
# টোকেনাইজেশন
def tokenize_function(examples):
return tokenizer(examples["sentence1"], examples["sentence2"], truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# TensorFlow Dataset তৈরি করা
train_dataset = tf.data.Dataset.from_tensor_slices((
dict(tokenized_datasets["train"]),
tokenized_datasets["train"]["label"]
)).batch(32)
# DeepSpeed কনফিগারেশন
deepspeed_config = {
"train_batch_size": 32,
"optimizer": {
"type": "AdamW",
"params": {
"lr": 5e-5
}
},
"fp16": {
"enabled": True
}
}
# TensorFlow কোডে DeepSpeed ব্যবহারের জন্য `deepspeed` প্যাকেজ ইম্পোর্ট করুন
import deepspeed.tensorflow as deepspeed_tf
# Model.compile() এ DeepSpeed ব্যবহার করে কম্পাইল করুন
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=5e-5),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'],
steps_per_execution=100,
)
# মডেল ট্রেনিং করা
model.fit(train_dataset, epochs=3)
উপসংহার
DeepSpeed বিভিন্ন লাইব্রেরির সাথে ব্যবহারের মাধ্যমে বড় মডেলগুলোর প্রশিক্ষণকে দ্রুত, কার্যকরী এবং দক্ষ করে তোলে।
- PyTorch ব্যবহার করে একটি সিম্পল নিউরাল নেটওয়ার্ক প্রশিক্ষণ দেওয়ার মাধ্যমে তার সুবিধা গুলো প্রকাশ পায়।
- Hugging Face Transformers এর মাধ্যমে বিভিন্ন NLP মডেলের প্রশিক্ষণে DeepSpeed এর কার্যকরীতা স্পষ্ট হয়।
- TensorFlow এর সাথে DeepSpeed ব্যবহার করে মডেল প্রশিক্ষণের জন্য একটি সহজ এবং কার্যকরী উপায় তৈরি হয়।
এই উদাহরণগুলো থেকে আপনি শিখতে পারবেন কিভাবে DeepSpeed ইন্টিগ্রেট করে বড় মডেল এবং ডেটাসেটের প্রশিক্ষণকে আরও কার্যকরী ও দ্রুত করা যায়।
Read more